package com.lagou.factory;

import java.lang.reflect.Method;
import java.util.List;

/**
 * desc: aop 代理接口
 *
 * @author tengfei wang
 * @version 1.0
 * @date Created in 7/9/2020
 */
public interface AopProxy {

    /**
     * 创建普通代理
     *
     * @param o 代理对象
     * @return 增强之后的代理对象
     */
    abstract Object createProxy(Object o);

    /**
     * 创建带事务的代理
     *
     * @param o       代理对象
     * @param methods 代理对象中需要添加事务的方法
     * @return 增强之后的代理对象
     */
    abstract Object createProxyWithTransaction(Object o, List<Method> methods);
}
